package com.bwf.exception;

/**
 * @Version v1.0
 * @Description: TODO
 * @Author ZHANZHONGXIN
 * @Date 2022/5/16 10:56
 * @Copyright 博为峰
 */
public class ExceptionDemo01 {
    /*
      异常处理
      1.自动抛
      2.手动抛
      throw在方法中抛出异常对象
      throws在方法的声明处抛出异常类，可以抛出多个（用逗号隔开）

      异常分类：
      1.编译时被检测异常（编译时异常）：Exception及其子类（除去RuntimeException及其子类），这种异常在编译时被检测到，可以进行相应的处理
      2.编译时不被检测异常（运行时异常）：RuntimeException及其子类，这种异常编译通过，在运行时发生，导致程序无法继续运行
     */
    public static void main(String[] args) throws MyException {
        int[] arr = new int[5];
//        arr = null;
        m1(arr, -2);
    }

    public static void m1(int[] arr, int index) /*throws MyException*/ {
        if (arr == null) {
            throw new NullPointerException("空指针异常");
        }
        if (index >= arr.length) {
            throw new ArrayIndexOutOfBoundsException("下标越界");
        }

        if (index < 0) {
//            throw new MyException("下标不能小于0");
        }
        System.out.println(arr[index]);
    }
}
